package dsl

import org.junit.Before
import org.junit.Test
import static org.junit.Assert.*
import dsl.AgendaDSL
import dominio.Agenda
import dominio.IAgendaListener
import dominio.Evento

class AgendaDSLTest {
	
	extension AgendaDSL dsl = new AgendaDSL
	val agenda = new Agenda
	val listener = new IAgendaListener
	
	@Before 
	def void setUp(){
		
		agenda
			<<< (13.h - "Almuerzo"
				> "Pone la mesa".mail
				> "Preparate para comer".sms => [
					numero = 1503927890
				]
				> "Ya casi esta la comida".llamada)
	
			<<< (15.h - "Fulbito" 
				> "Ponete la casaca".mail => [
					destino = "enseidler@gmail.com"
					asunto = "Manos sucias"
				]
				> "Ponerse los tinbo".sms
				> "Si nos dejas con uno menos no te llamamos mas".llamada => [
					numero = 1512934819
				])			
	}
	
	@Test
	def seEnvioMailTest() {
		agenda .. (12.h && listener)
		assertTrue(listener.seEnvioElMail("Pone la mesa"))
	}

	@Test
	def noSeEnvioMailTest() {
		agenda .. (12.h && listener)
		assertFalse(listener.seEnvioElMail("Pone la mesaaaaa"))
		assertFalse(listener.seEnvioElMail("Ponete la casaca"))
	}

	@Test
	def seEnvioSMSTest() {
		agenda .. (14.h && listener)
		assertTrue(listener.seEnvioElSMS("Preparate para comer"))
		assertTrue(listener.seEnvioElSMS("Ponerse los tinbo"))
	}

	@Test
	def noSeEnvioSMSTest() {
		agenda .. (14.h && listener)
		assertFalse(listener.seEnvioElSMS("Ponerse la remera"))
	}

	@Test
	def seHizoLlamadaTest() {
		agenda .. (12.h && listener)
		assertTrue(listener.seHizoUnaLlamada("Ya casi esta la comida"))
	}

	@Test
	def noSeHizoLlamadaTest() {
		agenda .. (12.h && listener)
		assertFalse(listener.seHizoUnaLlamada("Si nos dejas con uno menos no te llamamos mas"))
		assertFalse(listener.seHizoUnaLlamada("daleeeeeeeeeee"))
	}

	
}